package com.itheima.test;

import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import java.io.*;
import java.util.Map;

/**
* @Description:   测试静态化，基于ftl文件生成html文件
* @Param:
* @return:
* @Author: Mr.Yuan
* @Date:
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class FreemarkerTest01 {
    //        测试静态化，基于ftl文件生成html文件
    @Test
    public void test01() throws IOException, TemplateException {

//        创建配置类
        Configuration configuration=new Configuration(Configuration.getVersion());
//        定义模板
        String path = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(path+"/templates/"));
        Template template = configuration.getTemplate("test01.ftl");
//        定义模型数据
        Map map = Freemark_test01.getMap();
//        静态化
        String s = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        System.out.println(s);
//
        InputStream inputStream = IOUtils.toInputStream(s);
        FileOutputStream fileOutputStream=new FileOutputStream("d:/静态化的.html");
        IOUtils.copy(inputStream,fileOutputStream);
    }
//    基于字符串生产html文件
    @Test
    public void test02() throws IOException, TemplateException {

//        创建配置类
        Configuration configuration=new Configuration(Configuration.getVersion());
//        定义模板
        String  stringTemplate="<table>\n" +
                "    <tr>\n" +
                "        <td>编号</td>\n" +
                "        <td>姓名</td>\n" +
                "        <td>地址</td>\n" +
                "        <td>年龄</td>\n" +
                "    </tr>\n" +
                "    <#if aaa ??>\n" +
                "    <#list aaa as stu>\n" +
                "        <tr>\n" +
                "            <td>${stu_index+1}</td>\n" +
                "            <td>${stu.name!''}</td>\n" +
                "            <td>${stu.address!''}</td>\n" +
                "            <td <#if stu.age gt 30> style=\"background: blueviolet\" </#if> >${stu.age!''}</td>\n" +
                "        </tr>\n" +
                "    </#list>\n" +
                "   ${aaa?size}\n" +
                "    </#if>\n" +
                "\n" +
                "</table>";
        StringTemplateLoader stringTemplateLoader=new StringTemplateLoader();
        stringTemplateLoader.putTemplate("template",stringTemplate);
        configuration.setTemplateLoader(stringTemplateLoader);
        Template template = configuration.getTemplate("template","utf-8");

//        定义模型数据
        Map map = Freemark_test01.getMap();
//        静态化
        String s = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        System.out.println(s);
//
        InputStream inputStream = IOUtils.toInputStream(s);
        FileOutputStream fileOutputStream=new FileOutputStream("d:/字符串静态化的.html");
        IOUtils.copy(inputStream,fileOutputStream);
    }
}
